package com.itextpdf.text.signature; import com.itextpdf.text.pdf.XfaXpathConstructor; import com.itextpdf.text.pdf.security.DigestAlgorithms; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.junit.Assert; import org.junit.Test; import java.io.File; import java.io.FileInputStream; import java.security.KeyStore; import java.security.PrivateKey; import java.security.Security; import java.security.cert.Certificate; public class XmlDSigKSTest extends XmlDSigTest { public static final String KEYSTORE = "./src/test/resources/com/itextpdf/text/signature/ds-ks/ks"; public static final char[] PASSWORD = "password".toCharArray(); public static final String Src = "./src/test/resources/com/itextpdf/text/signature/xfa.pdf"; public static final String CmpDir = "./src/test/resources/com/itextpdf/text/signature/ds-ks/"; public static final String DestDir = "./target/com/itextpdf/test/signature/ds-ks/"; @Test public void XmlDSigRsaKS() throws Exception { (new File(DestDir)).mkdirs(); super.initialize(); String filename = "xfa.signed.ds.ks.pdf"; String output = DestDir + filename; BouncyCastleProvider provider = new BouncyCastleProvider(); Security.addProvider(provider); KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); ks.load(new FileInputStream(KEYSTORE), PASSWORD); String alias = ks.aliases().nextElement(); PrivateKey pk = (PrivateKey) ks.getKey(alias, PASSWORD); Certificate[] chain = ks.getCertificateChain(alias); signDsWithCertificate(Src, output, pk, chain, DigestAlgorithms.SHA1, provider.getName()); String cmp = saveXmlFromResult(output); Assert.assertTrue("Verification", verifyXmlDSig(cmp)); Assert.assertTrue(compareXmls(cmp, CmpDir + filename.replace(".pdf", ".xml"))); } @Test public void XmlDSigRsaKSPackage() throws Exception { (new File(DestDir)).mkdirs(); super.initialize(); String filename = "xfa.signed.ds.ks.package.pdf"; String output = DestDir + filename; BouncyCastleProvider provider = new BouncyCastleProvider(); Security.addProvider(provider); KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); ks.load(new FileInputStream(KEYSTORE), PASSWORD); String alias = ks.aliases().nextElement(); PrivateKey pk = (PrivateKey) ks.getKey(alias, PASSWORD); Certificate[] chain = ks.getCertificateChain(alias); signPackageDsWithCertificate(Src, output, XfaXpathConstructor.XdpPackage.Template, pk, chain, DigestAlgorithms.SHA1, provider.getName()); String cmp = saveXmlFromResult(output); Assert.assertTrue("Verification", verifyXmlDSig(cmp)); Assert.assertTrue(compareXmls(cmp, CmpDir + filename.replace(".pdf", ".xml"))); } }